package org.webapp.managedBeans;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Logger;

import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.persistence.CascadeType;
import javax.persistence.ManyToOne;
import javax.persistence.OneToOne;

import org.ejb.api.ProduitInterface;
import org.ejb.api.UtilisateurInterface;
import org.ejb.entities.Address;
import org.ejb.entities.Item;
import org.ejb.entities.OrderLine;
import org.ejb.entities.OrderParFois;
import org.ejb.entities.Utilisateur;
import org.ejb.entities.ValidationException;

@ManagedBean
@SessionScoped
public class ListeCommande implements Serializable {
		//private Utilisateur user = new Utilisateur();

		private OrderLine orderLine;
		private List<OrderParFois> orderParFois1 = new ArrayList<OrderParFois>();
		private List<OrderLine> orderLine1 = new ArrayList<OrderLine>(); 
		
		public ListeCommande(){
			InitialContext icp;
			InitialContext icu;
			Utilisateur u1;
			Item i1;
			
			OrderLine ol1;
			ProduitInterface pi=null;
			UtilisateurInterface ui = null;
//			log.info(p.getName()+" created");
//			if (p == null){
//				log.info("le produit n'est pas bien instancie");
//			}
			try {
				icp = new InitialContext();	
				pi = (ProduitInterface)icp.lookup("org.ejb.stateless.ProduitStateless@Remote");
				
				icu = new InitialContext();
				ui = (UtilisateurInterface)icu.lookup("org.ejb.stateless.UtilisateurStateless@Remote");
				
				//cr = (ICaddieRemote)ic.lookup("org.ejb.stateful.CaddieStateful@Remote");
				//ui.createItem(new Item ("mgs", coast), new Produit("jeux video", "les jeux video"));
				if (pi == null && ui == null){
					log.info("L'interface n'est pas bien instanciee");
				}
				else log.info("bien instanciee");
				
				Long uid = new Long(1);
				u1 = ui.findCustomer(uid);
//				Long opfid = new Long(1);
//				orderParFois = ui.findOrderParFois(opfid);
//				Long itemid = new Long(1);
//				i1 = pi.findItem(itemid);
				
				Long olid = new Long(1);
				orderLine = ui.findOrderLine(olid);
				orderParFois1 = ui.findOrderParFoisList(u1);
				
				//orderLine1 = ui.findOrderLineList(orderParFois);
								
			}	catch (NamingException e) {
				e.printStackTrace();
			}
			catch (ValidationException e) {
				e.printStackTrace();
			}
			catch (Exception e) {
				e.printStackTrace();
			}	
		}

	    //@EJB
		private Long id;
	    private Integer quantity;   
	    private Item item;
	    private OrderParFois orderParFois;
		private static final Logger log = Logger.getLogger("magasin Bean");
		private Address deliveryAddress;
	    
	    
		public Long getId() {
			return id;
		}
		public void setId(Long id) {
			this.id = id;
		}
		public Integer getQuantity() {
			return quantity;
		}
		public void setQuantity(Integer quantity) {
			this.quantity = quantity;
		}
		public Item getItem() {
			return item;
		}
		public void setItem(Item item) {
			this.item = item;
		}
		public OrderParFois getOrderParFois() {
			return orderParFois;
		}
		public void setOrderParFois(OrderParFois orderParFois) {
			this.orderParFois = orderParFois;
		}
		
		public List<OrderParFois> getOrderParFois1() {
			return orderParFois1;
		}
		public void setOrderParFois1(List<OrderParFois> orderParFois1) {
			this.orderParFois1 = orderParFois1;
		}
		
		public List<OrderLine> getOrderLine1() {
			return orderLine1;
		}
		public void setOrderLine1(List<OrderLine> orderLine1) {
			this.orderLine1 = orderLine1;
		}
		
		public OrderLine getOrderLine() {
			return orderLine;
		}
		public void setOrderLine(OrderLine orderLine) {
			this.orderLine = orderLine;
		}
	    
		public Address getDeliveryAddress() {
			return deliveryAddress;
		}
		public void setDeliveryAddress(Address deliveryAddress) {
			this.deliveryAddress = deliveryAddress;
		}
//	    // Le prix unitaire du produit
//	    private Float unitCost;
	    
//	    // Le sous total du produit
//	    private Float subTotal;
	    
//	    private int modalite;
		
		
		
}
